package com.liujit.upms.api;

import com.liujit.common.domain.result.DictItem;
import com.liujit.common.domain.result.Result;
import com.liujit.upms.domain.model.SysOauthClient;
import com.liujit.upms.domain.model.SysUser;
import com.liujit.upms.fallback.UpmsFeignFallbackClient;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @author: liujun
 * @date: 2021/6/21 10:14 下午
 * @description: 用户权限服务远程调用
 */
@FeignClient(value = "upms", fallback = UpmsFeignFallbackClient.class)
public interface UpmsFeignClient {

    /**
     * 根据系统字典数据，查询系统字典条数
     *
     * @param code 系统用户账号
     * @return
     * @author: liujun
     * @date: 2021/6/21 10:25 下午
     */
    @GetMapping("/sys/dict/item/getDictItem")
    Result<List<DictItem>> getDictItem(@RequestParam("code") String code);

    /**
     * 根据系统用户账号获取系统用户
     *
     * @param account 系统用户账号
     * @return
     * @author: liujun
     * @date: 2021/6/21 10:25 下午
     */
    @GetMapping("/sys/user/getByAccount")
    Result<SysUser> getByAccount(@RequestParam("account") String account);

    /**
     * 根据用户id，获取角色id
     *
     * @param userId
     * @return
     * @author: liujun
     * @date: 2021/6/21 10:25 下午
     */
    @GetMapping("/sys/user/getRoleIdByUserId")
    Result<List<Long>> getRoleIdByUserId(@RequestParam("userId") Long userId);

    /**
     * 根据系统认证客户端唯一标识查询系统认证客户端
     *
     * @param clientId 系统认证客户端唯一标识
     * @return
     * @author: liujun
     * @date: 2021/6/27 1:40 下午
     */
    @GetMapping("/sys/oauth/client/getByClientId")
    Result<SysOauthClient> getByClientId(@RequestParam("clientId") String clientId);
}
